#ifndef RSIM_CONSTRAINTUTILS_H
#define RSIM_CONSTRAINTUTILS_H

/* -------------------------------------------------------------------------- *
 * File: ConstraintUtils.h                                                    *
 * Authors: Kishor Bhalerao                                                   *
 * Email : kishor8dm@gmail.com                                                *
 * Contributors:                                                              *
 * Email:                                                                     *
 * copyright (c) 2010 Authors.                                                *
 *                                                                            *
 * This program is free software: you can redistribute it and/or modify it    *
 * under the terms of the GNU General Public License as published by the Free *
 * Software Foundation, either version 3 of the License, or any later version.*
 *                                                                            *
 * This program is distributed in the hope that it will be useful, but        *
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   *
 * for more details. (http://www.gnu.org/licenses/)                           *
 * -------------------------------------------------------------------------- */

namespace RSIM{

class RigidBodyNode;
class State;
template <class T>class List;
class State;
class MultibodySystem;

class ConstraintUtils{
        private:
                void updQForRigidBodyNode(const double *dq,
                                          RigidBodyNode *Nd, 
                                          State *state,
                                          int& qid)const;
        protected:

                void updBranchQs(const double *dq,
                                 const List<int>& umap,
                                 const List<int>& path,
                                 MultibodySystem *MBS,
                                 State *state,
                                 int& qid)const;
}; // class ConstraintUtils

}// namespace RSIM

#endif